package modelo.servicio;

import java.util.ArrayList;
import modelo.bd.dao.UsuarioDAO;
import modelo.bd.exception.DAOException;
import modelo.dominio.Usuario;

public class Usuarios {

    private static Usuarios instancia;
    private UsuarioDAO dao;

    private Usuarios() {
        this.dao = new UsuarioDAO();
    }

    public static Usuarios instancia() {
        if (instancia == null) {
            instancia = new Usuarios();
        }
        return instancia;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return new CloneNotSupportedException("No se puede clonar Usuarios.");
    }

    public boolean existe(String login, String contrasena) throws DAOException {
        ArrayList<Usuario> users = dao.selectWhere("UPPER(USPE_CLAVE)= UPPER('" + login + "') "
                + "AND UPPER(USPE_PASSWORD)= UPPER('" + contrasena + "')");
        if (users == null || users.isEmpty()) {
            return false;
        } else {
            return true;
        }
    }

    public Usuario obtener(String login) {
        try {
            return dao.selectWhere("UPPER(USPE_CLAVE)= UPPER('" + login + "')").get(0);
        } catch (DAOException e) {
            return null;
        }
        //return dao.selectWhere("UPPER(USPE_CLAVE)= UPPER('" + login + "')").get(0);
    }
    public Usuario obtener(String login, String contrasena) {
        try {
            return dao.selectWhere("UPPER(USPE_CLAVE)= UPPER('" + login + "') "
                + "AND UPPER(USPE_PASSWORD)= UPPER('" + contrasena + "')").get(0);
        } catch (DAOException e) {
            return null;
        } catch (Exception e) {
            return null;
        }
        //return dao.selectWhere("UPPER(USPE_CLAVE)= UPPER('" + login + "')").get(0);
    }
}
